package tests;

import java.awt.Point;

import aplicacion.modelo.Juego;
import aplicacion.modelo.Pastilla;
import aplicacion.modelo.Puntaje;
import junit.framework.Assert;
import junit.framework.TestCase;

public class PastillaTest extends TestCase {
	protected void setUp() throws Exception {
		super.setUp();
		Juego.reinicializarJuego();
	}
	
	public void testEstaBloqueada() {
		Pastilla pastilla=new Pastilla(new Point(1,8));
		PastillaTest.assertTrue(!pastilla.estaBloqueada());
	}

	public void testPastilla() {
		Puntaje puntaje=new Puntaje();
		Point posicion=new Point(1,8);
		Pastilla pastilla=new Pastilla(posicion);
		Assert.assertEquals(posicion,pastilla.getPosicion());
		Assert.assertEquals(puntaje.getPuntaje(),0);
	}
	
	public void testGetPuntaje(){
		Point posicion=new Point(1,8);
		Pastilla pastilla=new Pastilla(posicion);
		pastilla.recorrer();
		Assert.assertEquals(pastilla.getPuntaje(),pastilla.getPuntos());
	}

	public void testRecorrerNoRecorrida(){
		Point posicion=new Point(0,0);
		Pastilla pastilla=new Pastilla(posicion);
		int puntosEsperados=pastilla.getPuntaje()+pastilla.getPuntos();
		Assert.assertEquals(puntosEsperados,pastilla.getPuntos());
		Assert.assertEquals(posicion,pastilla.recorrer());
		Assert.assertTrue(pastilla.estaVisitada());
	}
	
	//EN ESTE METODO, SE SUMAN 100 PUNTOS A JUEGO (QUE HAY UNA UNICA INSTANCIA
	//Y COMO ES SINGLETON, NO SE PUEDE VOLVER A INSTANCIAR),COMO YA TENIAS 100,
	//AHORA JUEGO TIENE 200 PUNTOS.
	public void testRecorrerRecorrida(){
		Point posicion=new Point(0,0);
		Pastilla pastilla=new Pastilla(posicion);
		pastilla.recorrer();//ACA SE SUMAN 100 PUNTOS.
		int puntos=pastilla.getPuntaje();
		Assert.assertEquals(puntos,pastilla.getPuntaje());
		Assert.assertEquals(posicion,pastilla.recorrer());//ACA COMO YA ESTA VISITADA NO SUMA NADA.
		Assert.assertTrue(pastilla.estaVisitada());
	}
	//EL VALOR DE PUNTOS ES 100, DEBERIA SER 300, QUE QUE EN DOS METODOS ANTERIORES
	//A JUEGO LE SUMASTE 100 PUNTOS EN CADA UNO.
	public void testAumentarPuntaje(){
		Point posicion=new Point(0,0);
		Pastilla pastilla=new Pastilla(posicion);
		int puntosEsperados=pastilla.getPuntaje()+pastilla.getPuntos();
		pastilla.aumentarPuntaje(pastilla.getPuntos());
		Assert.assertEquals(puntosEsperados, pastilla.getPuntaje());
	}
}
